#include "I2C.h"
#include <REGX52.H>


#define AT24C02_ADDRESS 0xA0 //AT24C02的固定地址1010，在本开发板上地址000，最后一位（写入为0读取为1）

//往AT24C02写入数据
//WordAddress为写入数据的位置（0——255）
//Date为写入的内容
//写数据需要2—3毫秒（最长5毫秒）
void AT24C02_WriteByte(unsigned char WordAddress,unsigned char Date)
{
//	unsigned char x = 1;
	I2C_Start();//开始条件
	I2C_SendByte(AT24C02_ADDRESS);//发送AT24C02地址和写的命令
	I2C_ReceiveAck();//接收应答（正常接收返回0）
//	if(x==0)
//	{
//		P2=0X00;
//	}
	I2C_SendByte(WordAddress);//发送要写入数据的地址WordAddress
	I2C_ReceiveAck();//接收应答（正常接收返回0）
	I2C_SendByte(Date);//写入数据Date为写入内容
	I2C_ReceiveAck();//接收应答（正常接收返回0）
	I2C_Stop();//终止命令
}


//往AT24C02读取数据
//WordAddress要读取数据的位置（0—255）
//返回值为读取的数据
unsigned char AT24C02_ReadByte(unsigned char WordAddress)
{
	unsigned char Date = 0;
	I2C_Start();//开始条件
	I2C_SendByte(AT24C02_ADDRESS);//发送AT24C02地址和写的命令
	I2C_ReceiveAck();//接收应答（正常接收返回0）
	I2C_SendByte(WordAddress);//发送要读取的地址
	I2C_ReceiveAck();//接收应答（正常接收返回0）
	I2C_Start();//重新开始
	I2C_SendByte(AT24C02_ADDRESS|1);//发送AT24C02地址和读的命令
	I2C_ReceiveAck();//接收应答（正常接收返回0）
	Date = I2C_ReceiveByte();//读取数据
	I2C_SendAck(1);//发送应答
	I2C_Stop();//终止命令
	return Date;
}